﻿using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading;
using System.Xml.Linq;
using Microsoft.SharePoint;
using System.Text.RegularExpressions;

namespace LizardSoft.Common.FlexibleStructureDeployment
{
    public static partial class StructureHelper
    {
        private static void UpdateNeededContentTypes(SPWeb web, ListProcessingInfo listProcessingInfo)
        {
            SPList list = GetSPListFromFolderUrl(web, listProcessingInfo.ListFolderUrl);
            SPWeb rootWeb = web.Site.RootWeb;
            SPContentTypeCollection listContentTypes = list.ContentTypes;
            SPContentTypeCollection siteContentTypes = rootWeb.ContentTypes;
            foreach (SPContentTypeId siteContentTypeId in listProcessingInfo.SiteContentTypeIds)
            {
                SPContentTypeId listContentTypeId = listContentTypes.BestMatch(siteContentTypeId);
                SPContentType listContentType = listContentTypes[listContentTypeId];
                if (listContentType.Parent.Id == siteContentTypeId) // тип контента присутствует в списке
                {
                    SPContentType siteContentType = siteContentTypes[siteContentTypeId];
                    // Добавление новых полей
                    AddNewFields(web, listProcessingInfo.ListFolderUrl, listContentTypeId, siteContentType);
                    // Удаление ненужных полей
                    DeleteOldFields(web, listProcessingInfo.ListFolderUrl, listContentTypeId, siteContentType);
                    // Обновление названия и описания типа контента
                    UpdateContentTypeNameAndDescription(web, listProcessingInfo.ListFolderUrl, listContentTypeId, siteContentType);
                    // Отображение полей списка в представлении по умолчанию
                    AddOrDeleteNeededFieldsInDefaultView(web, listProcessingInfo.ListFolderUrl, listContentTypeId);
                }
            }
        }
    }
}
